package com.city.itis.action;

import java.util.List;
import javax.annotation.Resource;
import org.springframework.stereotype.Controller;
import com.city.itis.domain.SiteCategory;
import com.city.itis.service.SiteCategoryService;
import com.city.itis.util.Constants;
import com.opensymphony.xwork2.ActionSupport;
import com.opensymphony.xwork2.ModelDriven;

/**
 * 站点类别Action
 * @author WY
 *
 */
@Controller
public class SiteCategoryAction extends ActionSupport implements ModelDriven<SiteCategory> 
{
	private static final long serialVersionUID = 1L;	//系统自动生成的版本序列号
	
	private SiteCategory siteCategory =new SiteCategory();	//定义siteCategory对象
	
	private List<SiteCategory> siteCategoryList;	//声明siteCateogryList对象
	
	private SiteCategoryService siteCategoryService;	//声明siteCategoryService对象
	
	private String command=null;	//用于判断执行的动作
	
	private String result=null;	//定义字符串类型变量，用户存放结果信息。
	

	/**
	 * 添加方法
	 * @return
	 */
	public String add()
	{
	    int flag=siteCategoryService.add(siteCategory);	//调用站点类别添加方法
	    
	    //判断是否添加成功 (flag>0:表示添加成功，flag<0:表示添加失败)
		if(flag>0)
		{
			return SUCCESS;
		}else
		{
			return ERROR;
		}
	    
	}
	
	/**
	 * 删除方法
	 * @return
	 */
	public String delete()
	{
		int flag=siteCategoryService.deleteById(siteCategory.getCategoryNo());	//调用站点类别添加方法
		
		//判断是否添加成功 (flag>0:表示添加成功，flag<0:表示添加失败)
		if(flag>0)
		{
			return SUCCESS;
			
		}else
		{
			return ERROR;
		}
		
	}
	
	/**
	 * 修改方法
	 * @return
	 */
	public String modify()
	{
		int flag=siteCategoryService.modify(siteCategory);	//调用站点类别修改方法
		
		//判断是否添加成功 (flag>0:表示添加成功，flag<0:表示添加失败)
		if(flag>0)
		{
			return SUCCESS;
			
		}else
		{
			return ERROR;
		}
	}
	
	/**
	 * 根据类别编号，查询方法
	 * @return
	 */
	public String find()
	{
		siteCategory=siteCategoryService.getSiteCategoryById(siteCategory.getCategoryNo());	//根据站点类别编号，调用查询站点类别信息方法。
		//判断siteCategory是否为null
		if(siteCategory!=null)
		{
			//判断查询目的（修改、删除、明细）
			if(Constants.MODIFY.equals(command))
			{
				return Constants.MODIFY;
				
			}else if(Constants.DELETE.equals(command))
			{
				return Constants.DELETE;
				
			}else
			{
				return NONE;
			}
			
		}else
		{
			return ERROR;
		}
		
	}
	
	public String getSiteCategoryBySiteCategoryName()throws Exception
	{
		 String name = new String(siteCategory.getCategoryName().getBytes("iso-8859-1"), "UTF-8");   
		
		 SiteCategory sc=siteCategoryService.getSiteCategoryBySiteCategoryName(name);	//根据站点类别名称，调用查询站点类别信息方法。
		 
		 if(sc!=null)
		 {
			result="用户站点类别已经存在，请使用别的类别注册。";
		
		 }else
		 {
			result="恭喜您，该站点类别可用。";
			 
		 }
	    
		return SUCCESS;
	}
	
	/**
	 * 显示所有用户信息方法
	 * @return
	 */
	
	public String list()
	{
		siteCategoryList=siteCategoryService.findAll();	//调用查询所有站点方法
		
		//判断siteCategoryList是否为null
		if(siteCategoryList!=null)
		{
			return SUCCESS;
		}
			return ERROR;
	}

	//以下都是Get和Set方法
	
	@Override
	public SiteCategory getModel() 
	{
		return siteCategory;
	}

	public SiteCategory getSiteCategory()
	{
		return siteCategory;
	}

	public void setSiteCategory(SiteCategory siteCategory) 
	{
		this.siteCategory = siteCategory;
	}

	public List<SiteCategory> getSiteCategoryList()
	{
		return siteCategoryList;
	}

	public void setSiteCategoryList(List<SiteCategory> siteCategoryList) 
	{
		this.siteCategoryList = siteCategoryList;
	}

	public String getCommand()
	{
		return command;
	}

	public void setCommand(String command) 
	{
		this.command = command;
	}
	
	public SiteCategory getCategory()
	{
		return siteCategory;
	}
   
	public void setCategory(SiteCategory category)
	{
		this.siteCategory = category;
	}

	public SiteCategoryService getSiteCategoryService()
	{
		return siteCategoryService;
	}
	
	@Resource
	public void setSiteCategoryService(SiteCategoryService siteCategoryService)
	{
		this.siteCategoryService = siteCategoryService;
	}

	public String getResult() {
		return result;
	}

	public void setResult(String result) {
		this.result = result;
	}

	
}
